cssvalue: Pass property ID to transition function
authorBenjamin Otte <otte@redhat.com>
Thu, 30 Aug 2012 13:51:29 +0000 (15:51 +0200)
committerBenjamin Otte <otte@redhat.com>
Mon, 3 Sep 2012 10:54:14 +0000 (12:54 +0200)
This is to allow animating arrays properly. I'm not really thrilled
about this solution (we leak propertys into the values again...), but
it's the best I can come up with - I prefer it to having N different
array types...

22 files changed:
gtk/gtkcssarrayvalue.c
gtk/gtkcssbgsizevalue.c
gtk/gtkcssbordervalue.c
gtk/gtkcsscornervalue.c
gtk/gtkcsseasevalue.c
gtk/gtkcssenginevalue.c
gtk/gtkcssenumvalue.c
gtk/gtkcssimagevalue.c
gtk/gtkcssinheritvalue.c
gtk/gtkcssinitialvalue.c
gtk/gtkcssnumbervalue.c
gtk/gtkcsspositionvalue.c
gtk/gtkcssrepeatvalue.c
gtk/gtkcssrgbavalue.c
gtk/gtkcssshadowsvalue.c
gtk/gtkcssshadowvalue.c
gtk/gtkcssstringvalue.c
gtk/gtkcsstransition.c
gtk/gtkcsstypedvalue.c
gtk/gtkcssvalue.c
gtk/gtkcssvalueprivate.h
gtk/gtksymboliccolor.c

index fb22294c5cc873f66dff265ba64f83d3c9e384e6..dab397ea0e7bd2dba9859876ff6316ab5d056af3 100644 (file)
@@ -95,6 +95,7 @@ gtk_css_value_array_equal (const GtkCssValue *value1,
 static GtkCssValue *
 gtk_css_value_array_transition (GtkCssValue *start,
                                 GtkCssValue *end,
+                                guint        property_id,
                                 double       progress)
 {
   return NULL;
index d7349ddd58b1eae95017e51fbb20013801eef6c7..e545f61b344e8f81081a1c880bade99d35a1bca1 100644 (file)
@@ -84,6 +84,7 @@ gtk_css_value_bg_size_equal (const GtkCssValue *value1,
 static GtkCssValue *
 gtk_css_value_bg_size_transition (GtkCssValue *start,
                                   GtkCssValue *end,
+                                  guint        property_id,
                                   double       progress)
 {
   GtkCssValue *x, *y;
@@ -99,7 +100,7 @@ gtk_css_value_bg_size_transition (GtkCssValue *start,
 
   if (start->x)
     {
-      x = _gtk_css_value_transition (start->x, end->x, progress);
+      x = _gtk_css_value_transition (start->x, end->x, property_id, progress);
       if (x == NULL)
         return NULL;
     }
@@ -108,7 +109,7 @@ gtk_css_value_bg_size_transition (GtkCssValue *start,
 
   if (start->y)
     {
-      y = _gtk_css_value_transition (start->y, end->y, progress);
+      y = _gtk_css_value_transition (start->y, end->y, property_id, progress);
       if (y == NULL)
         {
           _gtk_css_value_unref (x);
index dab46319ae756b4b6e0b119578eeb2fc64d1c304..953ab53ca585b163a8e6b88cdd600b58817bc5b1 100644 (file)
@@ -95,6 +95,7 @@ gtk_css_value_border_equal (const GtkCssValue *value1,
 static GtkCssValue *
 gtk_css_value_border_transition (GtkCssValue *start,
                                  GtkCssValue *end,
+                                 guint        property_id,
                                  double       progress)
 {
   return NULL;
index d26dffd1d7164727290abcfb0a23605473e1ab02..48586dfa12f8eaa2d2b4e5a7f2b9c0cdb4307fca 100644 (file)
@@ -68,15 +68,16 @@ gtk_css_value_corner_equal (const GtkCssValue *corner1,
 
 static GtkCssValue *
 gtk_css_value_corner_transition (GtkCssValue *start,
-                                GtkCssValue *end,
-                                double       progress)
+                                 GtkCssValue *end,
+                                 guint        property_id,
+                                 double       progress)
 {
   GtkCssValue *x, *y;
 
-  x = _gtk_css_value_transition (start->x, end->x, progress);
+  x = _gtk_css_value_transition (start->x, end->x, property_id, progress);
   if (x == NULL)
     return NULL;
-  y = _gtk_css_value_transition (start->y, end->y, progress);
+  y = _gtk_css_value_transition (start->y, end->y, property_id, progress);
   if (y == NULL)
     {
       _gtk_css_value_unref (x);
index 81c9bce56a8b50be31699588f3a69dc13ac54c7b..19f979b06dc1a24138e86bc564c4c8c2d8c40668 100644 (file)
@@ -84,6 +84,7 @@ gtk_css_value_ease_equal (const GtkCssValue *ease1,
 static GtkCssValue *
 gtk_css_value_ease_transition (GtkCssValue *start,
                                GtkCssValue *end,
+                               guint        property_id,
                                double       progress)
 {
   return NULL;
index a39ac6c57d70503eb59965eb2bddea02a9d9bc49..851c6310c5496a654974474cab42c9626ae56992 100644 (file)
@@ -53,6 +53,7 @@ gtk_css_value_engine_equal (const GtkCssValue *value1,
 static GtkCssValue *
 gtk_css_value_engine_transition (GtkCssValue *start,
                                  GtkCssValue *end,
+                                 guint        property_id,
                                  double       progress)
 {
   return NULL;
index 9ea7ae8f017b82b2bb8f4030789dce6095789dcd..2d847f8e870b94ab65e6c719d154ff0ea2383fc1 100644 (file)
@@ -54,6 +54,7 @@ gtk_css_value_enum_equal (const GtkCssValue *enum1,
 static GtkCssValue *
 gtk_css_value_enum_transition (GtkCssValue *start,
                                GtkCssValue *end,
+                               guint        property_id,
                                double       progress)
 {
   return NULL;
index c40354ffdba600d7004565ad812ee26cd177062e..b8baa509f2d7a2cc91ae0500d823ee1aa595be65 100644 (file)
@@ -67,6 +67,7 @@ gtk_css_value_image_equal (const GtkCssValue *value1,
 static GtkCssValue *
 gtk_css_value_image_transition (GtkCssValue *start,
                                 GtkCssValue *end,
+                                guint        property_id,
                                 double       progress)
 {
   GtkCssImage *fade;
index d70200d038be5e29f3a7df05ea1a6e76f2e4dbd8..585a9760e5190232d98751488fef12bf2bffbb99 100644 (file)
@@ -65,6 +65,7 @@ gtk_css_value_inherit_equal (const GtkCssValue *value1,
 static GtkCssValue *
 gtk_css_value_inherit_transition (GtkCssValue *start,
                                   GtkCssValue *end,
+                                  guint        property_id,
                                   double       progress)
 {
   return NULL;
index 45cadd7c174bc4730436c20596f25ec8ca49fddc..d9d960f0fcff7b6e4d179502c72df7732ce994d4 100644 (file)
@@ -54,6 +54,7 @@ gtk_css_value_initial_equal (const GtkCssValue *value1,
 static GtkCssValue *
 gtk_css_value_initial_transition (GtkCssValue *start,
                                   GtkCssValue *end,
+                                  guint        property_id,
                                   double       progress)
 {
   return NULL;
index db9e154a77003d24818edc191301802be4ed55d0..c84bce6a1b57cd7bc2976148be50274edd6ea1ac 100644 (file)
@@ -142,6 +142,7 @@ gtk_css_value_number_equal (const GtkCssValue *number1,
 static GtkCssValue *
 gtk_css_value_number_transition (GtkCssValue *start,
                                  GtkCssValue *end,
+                                 guint        property_id,
                                  double       progress)
 {
   /* FIXME: This needs to be supported at least for percentages,
index e69147a995f7d5030562ff752248a1551177a4b4..077ab8429b4e61516fe62b200c410771d09e6fd5 100644 (file)
@@ -69,14 +69,15 @@ gtk_css_value_position_equal (const GtkCssValue *position1,
 static GtkCssValue *
 gtk_css_value_position_transition (GtkCssValue *start,
                                    GtkCssValue *end,
+                                   guint        property_id,
                                    double       progress)
 {
   GtkCssValue *x, *y;
 
-  x = _gtk_css_value_transition (start->x, end->x, progress);
+  x = _gtk_css_value_transition (start->x, end->x, property_id, progress);
   if (x == NULL)
     return NULL;
-  y = _gtk_css_value_transition (start->y, end->y, progress);
+  y = _gtk_css_value_transition (start->y, end->y, property_id, progress);
   if (y == NULL)
     {
       _gtk_css_value_unref (x);
index 6f070727e84500a47d6b8531bfdf06d796ec5ad8..b9387eb7dec7729ea382fc1b2c46fc587c682174 100644 (file)
@@ -53,6 +53,7 @@ gtk_css_value_repeat_equal (const GtkCssValue *repeat1,
 static GtkCssValue *
 gtk_css_value_repeat_transition (GtkCssValue *start,
                                  GtkCssValue *end,
+                                 guint        property_id,
                                  double       progress)
 {
   return NULL;
index 3bb6897d135055145592f475b8a1de2a60592330..99bcfa2b00a092018f76c35abe1f1eeb3e282b50 100644 (file)
@@ -53,6 +53,7 @@ gtk_css_value_rgba_equal (const GtkCssValue *rgba1,
 static GtkCssValue *
 gtk_css_value_rgba_transition (GtkCssValue *start,
                                GtkCssValue *end,
+                               guint        property_id,
                                double       progress)
 {
   GdkRGBA transition;
index 78e092a6b14ed986dae7b0a74d47d80757f2eb2a..d565d89d72c3f60c85f189bd937622ab34ea4db5 100644 (file)
@@ -93,6 +93,7 @@ gtk_css_value_shadows_equal (const GtkCssValue *value1,
 static GtkCssValue *
 gtk_css_value_shadows_transition (GtkCssValue *start,
                                   GtkCssValue *end,
+                                  guint        property_id,
                                   double       progress)
 {
   GtkCssValue *result;
@@ -109,14 +110,14 @@ gtk_css_value_shadows_transition (GtkCssValue *start,
 
   for (i = 0; i < MIN (start->len, end->len); i++)
     {
-      result->values[i] = _gtk_css_value_transition (start->values[i], end->values[i], progress);
+      result->values[i] = _gtk_css_value_transition (start->values[i], end->values[i], property_id, progress);
     }
   if (start->len > end->len)
     {
       for (; i < result->len; i++)
         {
           GtkCssValue *fill = _gtk_css_shadow_value_new_for_transition (start->values[i]);
-          result->values[i] = _gtk_css_value_transition (start->values[i], fill, progress);
+          result->values[i] = _gtk_css_value_transition (start->values[i], fill, property_id, progress);
           _gtk_css_value_unref (fill);
         }
     }
@@ -125,7 +126,7 @@ gtk_css_value_shadows_transition (GtkCssValue *start,
       for (; i < result->len; i++)
         {
           GtkCssValue *fill = _gtk_css_shadow_value_new_for_transition (end->values[i]);
-          result->values[i] = _gtk_css_value_transition (fill, end->values[i], progress);
+          result->values[i] = _gtk_css_value_transition (fill, end->values[i], property_id, progress);
           _gtk_css_value_unref (fill);
         }
     }
index bdfa8d25d4010a09c72aaaa3dc292577a7e21832..ed311a17ef53f2f114135690050322d70350125c 100644 (file)
@@ -106,17 +106,18 @@ gtk_css_value_shadow_equal (const GtkCssValue *shadow1,
 static GtkCssValue *
 gtk_css_value_shadow_transition (GtkCssValue *start,
                                  GtkCssValue *end,
+                                 guint        property_id,
                                  double       progress)
 {
   if (start->inset != end->inset)
     return NULL;
 
-  return gtk_css_shadow_value_new (_gtk_css_value_transition (start->hoffset, end->hoffset, progress),
-                                   _gtk_css_value_transition (start->voffset, end->voffset, progress),
-                                   _gtk_css_value_transition (start->radius, end->radius, progress),
-                                   _gtk_css_value_transition (start->spread, end->spread, progress),
+  return gtk_css_shadow_value_new (_gtk_css_value_transition (start->hoffset, end->hoffset, property_id, progress),
+                                   _gtk_css_value_transition (start->voffset, end->voffset, property_id, progress),
+                                   _gtk_css_value_transition (start->radius, end->radius, property_id, progress),
+                                   _gtk_css_value_transition (start->spread, end->spread, property_id, progress),
                                    start->inset,
-                                   _gtk_css_value_transition (start->color, end->color, progress));
+                                   _gtk_css_value_transition (start->color, end->color, property_id, progress));
 }
 
 static void
index 328fd21dc58fdb0c023a2118d7da96d0c4ddd744..78273d332776727d22f36e233dacba92268caef8 100644 (file)
@@ -51,6 +51,7 @@ gtk_css_value_string_equal (const GtkCssValue *value1,
 static GtkCssValue *
 gtk_css_value_string_transition (GtkCssValue *start,
                                  GtkCssValue *end,
+                                 guint        property_id,
                                  double       progress)
 {
   return NULL;
index cbedc8b6cc30a99071c74edb31a3737aa85888d0..ede18b32b7ba0fb774c0ddc7cfcd76dce4c42fdf 100644 (file)
@@ -46,6 +46,7 @@ gtk_css_transition_set_values (GtkStyleAnimation    *animation,
 
       value = _gtk_css_value_transition (transition->start,
                                          transition->end,
+                                         transition->property,
                                          progress);
       if (value == NULL)
         value = _gtk_css_value_ref (transition->end);
index a939bac0aa68f65989e7bfb3653a38c5c795248a..5ce5effae515b55fc332118aa6e38796d8f47025 100644 (file)
@@ -55,6 +55,7 @@ gtk_css_value_typed_equal (const GtkCssValue *value1,
 static GtkCssValue *
 gtk_css_value_typed_transition (GtkCssValue *start,
                                 GtkCssValue *end,
+                                guint        property_id,
                                 double       progress)
 {
   return NULL;
index e057f90b50d4afab51d921080f4331521fa959d4..b71eed1957e5064387ff62120317199a23dc5ec4 100644 (file)
@@ -125,6 +125,7 @@ _gtk_css_value_equal0 (const GtkCssValue *value1,
 GtkCssValue *
 _gtk_css_value_transition (GtkCssValue *start,
                            GtkCssValue *end,
+                           guint        property_id,
                            double       progress)
 {
   g_return_val_if_fail (start != NULL, FALSE);
@@ -133,7 +134,7 @@ _gtk_css_value_transition (GtkCssValue *start,
   if (start->class != end->class)
     return NULL;
 
-  return start->class->transition (start, end, progress);
+  return start->class->transition (start, end, property_id, progress);
 }
 
 char *
index 629cc754b20f8d959122ad67dc07bc38ad12e0fb..a7f9b9628f42855071c383759ca86a6fbeea0d67 100644 (file)
@@ -50,6 +50,7 @@ struct _GtkCssValueClass {
                                                        const GtkCssValue          *value2);
   GtkCssValue * (* transition)                        (GtkCssValue                *start,
                                                        GtkCssValue                *end,
+                                                       guint                       property_id,
                                                        double                      progress);
   void          (* print)                             (const GtkCssValue          *value,
                                                        GString                    *string);
@@ -74,6 +75,7 @@ gboolean     _gtk_css_value_equal0                    (const GtkCssValue
                                                        const GtkCssValue          *value2);
 GtkCssValue *_gtk_css_value_transition                (GtkCssValue                *start,
                                                        GtkCssValue                *end,
+                                                       guint                       property_id,
                                                        double                      progress);
 
 char *       _gtk_css_value_to_string                 (const GtkCssValue          *value);
index a96f9f594f04455a6494a10353edb89c64dd3e1a..1cca34c47e027a98c96637fe9b9057caf0ecb844 100644 (file)
@@ -238,6 +238,7 @@ gtk_css_value_symbolic_equal (const GtkCssValue *value1,
 static GtkCssValue *
 gtk_css_value_symbolic_transition (GtkCssValue *start,
                                    GtkCssValue *end,
+                                   guint        property_id,
                                    double       progress)
 {
   return NULL;